/**
 * 大多数情况下，运算符和函数会自动将赋予它们的值转换为正确的类型，例如：
 * alert 会自动将任何值转为字符串进行显示，算数运算符会将值转为数字。
 */

// 【字符串转换】
let value = true
console.log(typeof value) // boolean => "boolean"

value = String(value) // true => "true"
console.log(typeof value) // string类型

// 【数字型转换】
console.log('6' / '2') // 3
console.log(typeof Number('123')) // number
console.log(Number('hello')) // NaN 如果该字符串不是一个有效的数字，转换的结果会是 NaN。

/**
 * number类型转换规则：
 * undefined => NaN
 * null => 0
 * true/false => 1/0
 * string => 去掉首位空白字符（空格、换行符\n、制表符\t 等）后的纯数字字符串包含的数字，如果字符串为空则转为0，如果转换出现错误则为NaN。
 */
console.log(Number('')) // 0
console.log(Number(' ')) // 0
console.log(Number(' 3.14 ')) // 3.14
console.log(Number('\n')) // 0
console.log(Number('\t')) // 0
console.log(Number('\n\t')) // 0
console.log(Number('12\n\t')) // 12
console.log(Number('\n\t13')) // 13
console.log(Number('\n24\t')) // 24
console.log(Number('1\n\t2')) // NaN

// 【布尔类型转换】
// 转换规则：除（0、空字符串、null、undefined、NaN）转为false外，其余所有值转为true。
console.log(Boolean('')) // false
console.log(Boolean(' ')) // true（空格不算空字符串）
